﻿/*
平方和排序 
Time Limit:1000MS  Memory Limit:32768K

  
	Description:
	给出一些整数组，请编程每组整数按各位数字的平方和的大小排序。其结构为：每组整数第一行只有一个整数N，表示后继有N个整数需要排序，若表示整数组的个数为0，表示输入结束。
	
	  Sample Input:
	  9
	  12 567 91 33 657 812 2221 3 77
	  5
	  1 3 11 33 9
	  0
	  Sample Output:
	  12 3 2221 33 812 91 77 567 657 
	  1 11 3 33 9
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int sqrsum(int num)
{
	int sum=0;
	int remainder;
	while(num)
	{
		remainder=num%10;
		sum+=remainder*remainder;
		num/=10;
	}
	return sum;
}

bool comparator(int a, int b)
{
	return sqrsum(a)<sqrsum(b);
}

int main(int argc, char* argv[])
{
	int total;

	
	while(cin>>total && total)
	{
		int elem;
		vector<int> vints(total, 0);
		for(int i=0; i<total; ++i)
		{	
			cin>>elem;
			vints[i]=elem;
		}

		sort(vints.begin(), vints.end(), comparator);

		copy(vints.begin(), vints.end()-1, ostream_iterator<int>(cout, " "));
		cout<<*(vints.end()-1)<<endl;
	}
	return 0;
}
